package top.moonkit.rs_pro.config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

import java.util.Arrays;
import java.util.Locale;

@Configuration
public class InternationalizationConfig {

    /**
     * 配置区域解析器
     * 支持会话、Cookie和请求头方式解析区域
     * 默认使用中文
     * @return LocaleResolver
     */
    @Bean
    public LocaleResolver localeResolver() {
        // 使用会话方式存储区域设置
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return slr;
    }

    /**
     * 配置消息源
     * 支持多语言消息文件
     * @return MessageSource
     */
    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        // 配置多语言文件基础名
        messageSource.setBasenames(
            "classpath:messages",
            "classpath:messages_zh_CN",
            "classpath:messages_en_US"
        );
        messageSource.setDefaultEncoding("UTF-8");
        messageSource.setCacheSeconds(3600); // 缓存1小时
        messageSource.setFallbackToSystemLocale(false);
        // 设置默认区域
        messageSource.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return messageSource;
    }
}